Выглядит ли следующий код валидным С++ кодом? Если да, то какое значение будет выведено в результате его работы?
#include <iostream> int main() { int number = 11; int count = number / 4; int i = 0; switch (number % 4) { case 0: do { ++i; case 3: ++i; case 2: ++i; case 1: ++i; } while (count-- > 0); } std::cout << i; }
С первого взгляда этот код может показаться какой-то кашей, в которой конструкция switch и цикл do-while просто наложены друг на друга. Однако с точки зрения стандарта языка , здесь все совершенно законно.
На самом деле, здесь описан цикл, в котором переменная i увеличивается на единицу number раз, и, как не сложно теперь догадаться, в данном случае программа выведет число 11. То есть код выше будет справедливо «упростить» следующим образом:
#include <iostream> int main() { int number = 11; int i = 0; while (number-- > 0) { ++i; } std::cout << i; }
Но для чего же тогда